# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Redis.V1.Model.Backup do
  @moduledoc """
  Backup of a cluster.

  ## Attributes

  *   `backupFiles` (*type:* `list(GoogleApi.Redis.V1.Model.BackupFile.t)`, *default:* `nil`) - Output only. List of backup files of the backup.
  *   `backupType` (*type:* `String.t`, *default:* `nil`) - Output only. Type of the backup.
  *   `cluster` (*type:* `String.t`, *default:* `nil`) - Output only. Cluster resource path of this backup.
  *   `clusterUid` (*type:* `String.t`, *default:* `nil`) - Output only. Cluster uid of this backup.
  *   `createTime` (*type:* `DateTime.t`, *default:* `nil`) - Output only. The time when the backup was created.
  *   `encryptionInfo` (*type:* `GoogleApi.Redis.V1.Model.EncryptionInfo.t`, *default:* `nil`) - Output only. Encryption information of the backup.
  *   `engineVersion` (*type:* `String.t`, *default:* `nil`) - Output only. redis-7.2, valkey-7.5
  *   `expireTime` (*type:* `DateTime.t`, *default:* `nil`) - Output only. The time when the backup will expire.
  *   `name` (*type:* `String.t`, *default:* `nil`) - Identifier. Full resource path of the backup. the last part of the name is the backup id with the following format: [YYYYMMDDHHMMSS]_[Shorted Cluster UID] OR customer specified while backup cluster. Example: 20240515123000_1234
  *   `nodeType` (*type:* `String.t`, *default:* `nil`) - Output only. Node type of the cluster.
  *   `replicaCount` (*type:* `integer()`, *default:* `nil`) - Output only. Number of replicas for the cluster.
  *   `shardCount` (*type:* `integer()`, *default:* `nil`) - Output only. Number of shards for the cluster.
  *   `state` (*type:* `String.t`, *default:* `nil`) - Output only. State of the backup.
  *   `totalSizeBytes` (*type:* `String.t`, *default:* `nil`) - Output only. Total size of the backup in bytes.
  *   `uid` (*type:* `String.t`, *default:* `nil`) - Output only. System assigned unique identifier of the backup.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :backupFiles => list(GoogleApi.Redis.V1.Model.BackupFile.t()) | nil,
          :backupType => String.t() | nil,
          :cluster => String.t() | nil,
          :clusterUid => String.t() | nil,
          :createTime => DateTime.t() | nil,
          :encryptionInfo => GoogleApi.Redis.V1.Model.EncryptionInfo.t() | nil,
          :engineVersion => String.t() | nil,
          :expireTime => DateTime.t() | nil,
          :name => String.t() | nil,
          :nodeType => String.t() | nil,
          :replicaCount => integer() | nil,
          :shardCount => integer() | nil,
          :state => String.t() | nil,
          :totalSizeBytes => String.t() | nil,
          :uid => String.t() | nil
        }

  field(:backupFiles, as: GoogleApi.Redis.V1.Model.BackupFile, type: :list)
  field(:backupType)
  field(:cluster)
  field(:clusterUid)
  field(:createTime, as: DateTime)
  field(:encryptionInfo, as: GoogleApi.Redis.V1.Model.EncryptionInfo)
  field(:engineVersion)
  field(:expireTime, as: DateTime)
  field(:name)
  field(:nodeType)
  field(:replicaCount)
  field(:shardCount)
  field(:state)
  field(:totalSizeBytes)
  field(:uid)
end

defimpl Poison.Decoder, for: GoogleApi.Redis.V1.Model.Backup do
  def decode(value, options) do
    GoogleApi.Redis.V1.Model.Backup.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Redis.V1.Model.Backup do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
